$.fn.searchTree=function(option){
	var thisId=$(this).attr("id");
	var zTree;
	var li_index=-1;
	var e;
	var dataLen;
	var defaults = {
			url: "organ/search",					//模糊查询调用的url	
			ztreeUrl:"organ/tree",				//机构树url
			ztreeId: thisId,						//生成模糊查询机构树的box
    		ztreeListBox: thisId+'_listBox',		//机构树模糊查询列表box
			id: thisId+'_list',						//机构树模糊查询列表
			treeList:thisId+'_treeList',			//机构树列表
			inputName: thisId+'_key',				//机构树搜索输入框
			ztree_dw: thisId+'_ztree_dw',			//下拉点击按钮
			ztree_tip: thisId+'_tip',				//机构树搜索提示
	  		orgName: thisId+'_orgName',      				//机构名称
	  		orgCode: thisId+"_orgCode",       		//机构代码
	        orgId: thisId+"_orgId",           			//机构id
	        parentId: thisId+"_parentId",           			//上级机构id
	        searchNumber: 10,           				//设置搜索的最大数量
	        validate:false,
	        callback:null,
	        orgIdCallback:null
	};
	var _op = $.extend(defaults, option);
	//生成机构树对应的内容
	$(this).append('<input type="text" name="'+_op.inputName+'" id="'+_op.inputName+'" value="" class="ztree_empty ui_input" '+(_op.validate?"validator=\'{\"label\":\"机构\",\"afterDom\":\"#"+thisId+"\"}\'":'')+' autocomplete="off" /> <a id="'+_op.ztree_dw+'" href="javascript:void(0)" class="dw_ico"></a>'
		 	+'<div class="org_list dn" id="'+_op.ztreeListBox+'"> <ul id="'+_op.id+'" class="search_tree"></ul><ul id="'+_op.treeList+'" class="ztree"></ul></div>'
		 	+'<input type="hidden" id="'+_op.orgName+'" name="'+_op.orgName+'"  value=""/>'
		 	+'<input type="hidden" id="'+_op.orgCode+'" name="'+_op.orgCode+'"  value=""/>'
		 	+'<input type="hidden" id="'+_op.parentId+'" name="'+_op.parentId+'"  value=""/>'
		 	+'<input type="hidden" id="'+_op.orgId+'" name="'+_op.orgId+'" value="" />');
	var timeOutId="";
	$("#"+_op.inputName).keyup(function(event){
		e=event;
		if($(this).val()==""){
			$("#"+_op.ztreeListBox).hide();
			li_index=-1;
     	  	if(_op.orgIdCallback!=null){
               	_op.orgIdCallback("");
      	  	}
			return false;
		}
		if (e.keyCode == 38||e.keyCode == 40||e.keyCode==13){
		}else{
			 if($(this).val()!=""){
		           clearTimeout(timeOutId);
		       }
			 //设置延时函数，防止输入一个内容就向后台发送请求
			 timeOutId=setTimeout(function(){
				$.ajax({
					   type: "POST",
					   url: _op.url,
					   data:{
						   total:_op.searchNumber,
						   keyword:$("#"+_op.inputName).val()
					   },
					   success: function(msg){
						   dataLen=msg.length;
						   li_index=-1;
						   var str="";
					    for(var i=0; i<msg.length;i++){
					    	str+="<li orgId='"+msg[i].id+"' parentId='"+msg[i].parentId+"' codeName='"+msg[i].codeName+"' orgCode='"+msg[i].orgCode+"' orgName='"+msg[i].orgName+"'>"+msg[i].codeName+"</li>";
					   }
					    //显示模糊搜索机构树内容
					    $("#"+_op.ztreeListBox).bgiframe();//解决IE6下select穿透问题
					    $("#"+_op.ztreeListBox).show();
					    $("#"+_op.id).show();
					    //隐藏标准机构树
					    $("#"+_op.treeList).hide();
					  	$("#"+_op.id).html(str);
					  	$("#"+_op.id).find("li").hover(
			                    function(){
			                      $(this).addClass("current");
			                      li_index=$(this).index();
			                    },
			                    function(){
			                        $(this).removeClass("current");
			                });
					  	$("#"+_op.id).find("li").click(function(){
					  		var codeName=$(this).attr("codeName");
					  		var orgName=$(this).attr("orgName");
					  		var orgCode=$(this).attr("orgCode");
					  		var orgId=$(this).attr("orgId");
					  		var parentId=$(this).attr("parentId");
					  		$("#"+_op.inputName).val(codeName);
					  		$("#"+_op.orgName).val(orgName);
					  		$("#"+_op.orgCode).val(orgCode);
					  		$("#"+_op.orgId).val(orgId);
					  		$("#"+_op.parentId).val(parentId);
					  		 if(_op.callback!=null){
						          	_op.callback();
						 	  	}
					  		$("#"+_op.ztreeListBox).hide();
			         	  	if(_op.orgIdCallback!=null){
			         	  		
			                   	_op.orgIdCallback(orgId);
			          	  	}
					  	});
					}
			});
			},200);
		}
		//键盘操作--------------------start
		keyboard();
	//键盘操作-------------------end
	});
	
	//下拉按钮点击
/*	$("#"+_op.ztree_dw).click(function(){
		 //隐藏模糊搜索机构树内容
		$("#"+_op.ztreeListBox).show();
	    $("#"+_op.id).hide();
	    //显示标准机构树
	    $("#"+_op.treeList).show();
	});*/
	$("#"+_op.ztree_dw).toggle(
			  function () {
				  //隐藏模糊搜索机构树内容
				  $("#"+_op.ztreeListBox).bgiframe();
					$("#"+_op.ztreeListBox).show();
				    $("#"+_op.id).hide();
				    //显示标准机构树
				    $("#"+_op.treeList).show();
			  },
			  function () {
				  //隐藏模糊搜索机构树内容
					$("#"+_op.ztreeListBox).hide();
				    $("#"+_op.id).hide();
				    //显示标准机构树
				    $("#"+_op.treeList).show();
			  }
			);
	
	var setting={
    		async:{
				enable: true,
				autoParam:["id"],
				url:_op.ztreeUrl,
				type:"get"
			},
        data: {
            key:{
            	name:'codeName'
            },
            simpleData:{
            	enable: true,
				idKey: "id",
				pIdKey: "parentId",
				rootPId: 0
            }
        },
        callback: {
            onClick:zTreeOnClick
        }
    };
	
	$(function($){
		zTree=$.fn.zTree.init($("#"+_op.treeList),setting);
	});
	
	function zTreeOnClick(e, treeId, treeNode){
		var nodes = zTree.getSelectedNodes();
		 //$("#"+_op.inputName).attr("value",nodes[0].codeName);
		 $("#"+_op.inputName).val(nodes[0].codeName);
		 $("#"+_op.orgId).val(nodes[0].id);
		 var tem=nodes[0].id;
  		 if(_op.orgIdCallback!=null){
          	_op.orgIdCallback(tem);
 	  	 }
		 $("#"+_op.orgCode).val(nodes[0].orgCode);
		 $("#"+_op.orgName).val(nodes[0].orgName);
		 $("#"+_op.parentId).val(nodes[0].parentId);
		 /*$("#"+_op.orgId).attr("value",nodes[0].id);
		 $("#"+_op.orgCode).attr("value",nodes[0].orgCode);
		 $("#"+_op.orgName).attr("value",nodes[0].orgName);
		 $("#"+_op.parentId).attr("value",nodes[0].parentId);*/
		 if(_op.callback!=null){
         	_op.callback();
	  	}
		 $("#"+_op.ztreeListBox).hide();
	}
	 function keyboard(){
		 //向上
            if (e.keyCode == 38) {
                li_index--;
                if(li_index<-1){
                    li_index=dataLen-1;
                    $("#"+_op.id).find("li").removeClass("current");
                    $("#"+_op.id).find("li").eq(li_index).addClass("current");
                    getTreeValue(li_index);
                    return false;
                }
                $("#"+_op.id).find("li").removeClass("current");
                $("#"+_op.id).find("li").eq(li_index).addClass("current");
                getTreeValue(li_index);
            }
            //向下
            else if (e.keyCode == 40) {
            	++li_index;
            	 if(li_index==dataLen){
                    li_index=0;
                    $("#"+_op.id).find("li").removeClass("current");
                    $("#"+_op.id).find("li").eq(li_index).addClass("current");
                    getTreeValue(li_index);
                    return false;
                }
            	 if(li_index>dataLen){
            		 li_index=0;
                 }
                $("#"+_op.id).find("li").removeClass("current");
                $("#"+_op.id).find("li").eq(li_index).addClass("current");
                getTreeValue(li_index);
            }
            //回车键
            else if(e.keyCode==13){
            	if(_op.callback!=null){
                	_op.callback();
    	  		}
            	 var tem=$("#"+_op.id).find("li").eq(li_index).attr("orgId");
         	  	if(_op.orgIdCallback!=null){
                   	_op.orgIdCallback(tem);
          	  	}
                $("#"+_op.ztreeListBox).hide();
            }
	 }
	 function getTreeValue(index){
		 $("#"+_op.inputName).val($("#"+_op.id).find("li").eq(index).attr("codename"));
		 $("#"+_op.orgName).val($("#"+_op.id).find("li").eq(index).attr("orgname"));
	  	 $("#"+_op.orgCode).val($("#"+_op.id).find("li").eq(index).attr("orgcode"));
	  	 $("#"+_op.orgId).val($("#"+_op.id).find("li").eq(index).attr("orgId"));
	  	 var tem=$("#"+_op.id).find("li").eq(index).attr("orgId");
	  	if(_op.orgIdCallback!=null){
          	_op.orgIdCallback(tem);
 	  	}
	  	 $("#"+_op.parentId).val($("#"+_op.id).find("li").eq(index).attr("parentId"));
	 }
};